package com.example.demo.huawei;

import java.util.Scanner;
import java.util.Stack;

public class Main24 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 创建 Scanner 对象，用于读取输入
        String str = sc.next(); // 读取输入的火星人字符串表达式
        System.out.println(operate(str)); // 计算并输出结果
    }

    public static long operate(String str) {
        Stack<Long> stack = new Stack<>(); // 创建一个栈用于存储操作数
        int i = 0; // 初始化遍历字符串的索引
        while (i < str.length()) { // 遍历输入的字符串
            char ch = str.charAt(i); // 获取当前字符
            if (Character.isDigit(ch)) { // 如果当前字符是数字
                int start = i; // 记录数字的起始位置
                while (i < str.length() && Character.isDigit(str.charAt(i))) { // 提取完整的数字
                    i++;
                }
                long num = Long.parseLong(str.substring(start, i)); // 将提取到的数字字符串转换为长整型
                stack.push(num); // 将数字压入栈中
            } else {
                if (ch == '$') { // 如果当前字符是 $ 运算符
                    long y = stack.pop(); // 弹出栈顶元素作为 y
                    i++; // 索引向后移动一位
                    int start = i; // 记录数字的起始位置
                    while (i < str.length() && Character.isDigit(str.charAt(i))) { // 提取完整的数字
                        i++;
                    }
                    long x = Long.parseLong(str.substring(start, i)); // 将提取到的数字字符串转换为长整型
                    stack.push(3 * y + x + 2); // 计算 x$y 的值并压入栈中
                } else if (ch == '#') { // 如果当前字符是 # 运算符
                    i++; // 索引向后移动一位
                }
            }
        }

        Stack<Long> reversedStack = new Stack<>(); // 创建一个新的栈，用于反转操作数栈中的元素
        while (!stack.isEmpty()) { // 当操作数栈不为空时
            reversedStack.push(stack.pop()); // 将操作数栈的元素弹出并压入新栈中
        }

        long result = reversedStack.pop(); // 弹出新栈的栈顶元素作为初始结果

        while (!reversedStack.isEmpty()) { // 当新栈不为空时
            long x = reversedStack.pop(); // 弹出新栈的栈顶元素作为 x
            result = 2 * result + 3 * x + 4; // 计算 x#y 的值并更新结果
        }

        return result; // 返回计算结果
    }
}




